﻿using System.Collections.Generic;
using System.Web.Mvc;
using ControleRepresentante.Logic;
using ControleRepresentante.Logic.Models;
using ControleRepresentante.Logic.Repositories;
using ControleRepresentante.Logic.Repositories.SearchExtensions;
using WebSite.ViewModels.ViewModelExtensions.DetailsViewModelExtensions;
using WebSite.ViewModels.ViewModelExtensions.EditViewModelExtensions;
using WebSite.ViewModels.ViewModelExtensions.IndexViewModelExtensions;

namespace WebSite.Controllers.ControllerExtensions
{
    public interface IControllerExtension
    {
        IIndexViewModelExtension GetIndexViewModelExtension(FormCollection formCollection, IRepository repository);
        IEditViewModelExtension EditViewModelExtension { get; }
        IDetailsViewModelExtension DetailsViewModelExtension { get; }
        ISearchExtension GetSearchExtension(FormCollection formCollection);
        bool CanHandle(Area area, Representante representante);
        Dictionary<string, string> TryUpdateModel(ModelBase model, FormCollection formCollection);
        void SetModel(ModelBase model);
        void RegisterIndexColumns(IIndexColumnsProvider indexColumnsProvider);
    }
}